Ada entries in the Symbol Type drop-down

package
When you select this symbol type, packages defined in the project are listed in the Symbol Browser`s Symbol List. Also, task, task types and protected types are shown here. Enable Signature button will list project and file names in which these entities are defined and will prefix records as record and all other symbols as package.

.

| Note
| There are some different kind of Ada symbols, which appear under the same category in SNiFF+. For example, SNiFF+`s package type corresponds to packages, records, tasks, task types and protected types. Similarly, subprog type corresponds to subprograms and exceptions. In this tutorial, when we refer to one of these collective categories, we always refer to all Ada language constructs which are mapped to the same collective category. For example, SNiFF+'s various capabilities that apply to packages also apply to task types and to all other constructs that you can find in package of the Symbol Type drop-down.

enum
When you select this symbol type, enumeration types defined in the project are listed in the Symbol List. In case of enumeration types defined in a package, enabling the Signature checkbox will prefix those enums with the name of the enclosing package in the form PACKAGE::ENUM. In the example project, for example, you can see PHIL::STATES enumeration type. The project and the file name in which the definition occur, is also shown.
Double-clicking on the symbol will start a Source Editor and jump to the enumeration type definition.
enum item
When you select this symbol type, all enumeration items defined in the project are listed in the Symbol List. Enabling the Signature checkbox will show the enumeration type to which this enumeration item belongs, in the form described above. In this case, the enumeration item name appears in brackets. For example, You can see PHIL::STATES {EATING}.
subprog
When you select this symbol type, a list of all global procedures and functions defined in your project is displayed in the Symbol List. Global here is used to refer subprograms which are not defined inside package specifications, that is, subprograms declared outside packages and subprograms that are defined inside package bodies, with no corresponding specification in the package specification. These subprograms are local to the package body, and as they are not visible from the package specification, are considered not to be a part of the package. Subprograms defined in package specifications are not listed here (you can find them when you select pkg subprog def (or pkg subprog body) from the Symbol Type drop-down).
To see the parameter and return types and of the subprograms, enable the Signature button. You can see the return values in front of the function names. In case of procedures, the return type is empty. Parameter types can be seen after the subprogram names enclosed in parenthesis and separated by commas. If no parameters exist, you can see an empty opening and closing parenthesis, for example, DINERS().
object
When you select this symbol type, all global objects and named numbers are displayed. Enabling the Signature checkbox will show the object`s type in front of its name. For named numbers, type _NamedNumber_ is shown.
In our example project, no global objects are defined, so the symbol list is empty.
pkg subprog
When you select this symbol type, all package subprograms are listed. With Signature disabled, you can see the package name in which the subprogram is specified after the symbol name, for example, OPEN is followed by WINDOWS, meaning that OPEN is a subprogram of package WINDOWS. Enabling Signature will display more detailed information. First the return type is shown, followed by the symbol name prefixed with its package name, and parameter types in parenthesis. Subprogram OPEN is now displayed as WINDOW WINDOWS::OPEN (Position, Height, Width). As for global subprograms, return type and/or parameter types may be empty.
You can see special subprograms in the Symbol List, which are not actually defined in the project. Have a look at item ~RANDOM_GENERIC. There is no subprogram with this name in any of the projects. This "subprogram" is generated by the parser for each package. It always has the name of its package, prefixed with a tilde; it has no parameters and return type. This generated subprogram corresponds to the package initialization statements in the package body, which can be viewed as a kind of subprogram.
Double-click symbol ~RANDOM_GENERIC in the Symbol Browser. A Source Editor comes up, file random_generic.ads is loaded and the keyword

PACKAGE is highlighted. This is the synthesized position of the generated initialization procedure specification.
In the Source Editor, choose Show > Implementation of ~RANDOM_GENERIC. File random_generic.adb is loaded and the keyword BEGIN is highlighted. This is the synthesized position of the body of the generated procedure.
All packages have the specification of the generated procedure. However, body of this procedure exist only for those packages, which have package initialization. For example, if you select and double-click ~SCREEN in the Symbol Browser, screen.ads will be loaded and the keyword PACKAGE will be highlighted. But, as there is no package initialization for package SCREEN, the Implementation of... option is disabled.
pkg object
When you select this symbol type, package objects are displayed. Symbols appear in the list similarly to package subprograms, together with their defining package.
typedef
When you select this symbol type, type definitions, subtypes and derived types are shown. Enumeration types are not displayed here (see enum). Enabling Signature lets you see packages containing type definitions, and signatures can also be seen in parenthesis. For example, you can see SCREEN::HEIGHT (_sub_INTEGER). This means that HEIGHT is defined in package SCREEN and it is a subtype of INTEGER.
The following abbreviations are used in type signatures:

- _sub_subtype
- _der_derived-type
- _acc_access-type
- _IntegerType_integral-type (

RANGE )
- _RealType_real-type (
DIGITS )
- _RecordType_record-type
Array types has the signature ARRAY(#, ...) OF ..., where the number of hashmarks corresponds to the dimension of the array. In case of array of arrays, only the first set of dimension is displayed. For example:
ARRAY (1..5) OF BOOL is displayed as ARRAY (#) OF BOOL,
ARRAY (1..5) OF STRING (1..20) is displayed as ARRAY (#) OF STRING.
Note that as records in Ada always belong to a type declaration, they appear twice, both among typedefs and packages.
label
When you select this symbol type, all labels defined in the project are displayed in the Symbol List window.

| Note
| Labels are only shown in the Symbol Type drop-down if they exist in the project.